#include "carmanagewidget.h"
#include "ui_carmanagewidget.h"
#include <QMessageBox>
#include <QSqlError>
#include "parkinginfowidget.h"
#include <QDebug>

carManageWidget::carManageWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::carManageWidget)
{
    ui->setupUi(this);
    initWindow();
    initTable();
}

carManageWidget::~carManageWidget()
{
    delete ui;
}

/**
 * @brief 初始化窗体
 */
void carManageWidget::initWindow()
{
    this->setWindowTitle("车位管理");
}

/**
 * @brief 初始化Table
 */
void carManageWidget::initTable()
{
    model = new QSqlTableModel(this);
    model->setTable("parking"); //指定表
    model->setHeaderData(1,Qt::Horizontal,"车位位置");
    model->setHeaderData(2,Qt::Horizontal,"车位类型");
    model->setHeaderData(3,Qt::Horizontal, "是否可充电");
    model->setHeaderData(4,Qt::Horizontal, "车位大小");
    model->setHeaderData(5,Qt::Horizontal, "车位状态");
    model->select(); //查询
    model->setEditStrategy(QSqlTableModel::OnManualSubmit); //Model编辑策略，提交生效

    ui->tableView->setModel(model); //将模型设置到视图中
    ui->tableView->setColumnHidden(0, 1); //隐藏编号列
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);   //使其不可编辑
}

/**
 * @brief 添加车位信息
 */
void carManageWidget::on_btn_add_park_clicked()
{
    ParkingInfoWidget *widget = new ParkingInfoWidget();
    widget->show();
}

/**
 * @brief 删除选中车位
 */
void carManageWidget::on_btn_delete_park_clicked()
{
    int curRow = ui->tableView->currentIndex().row(); //获取选中行号
    model->removeRow(curRow); //删除该行
    int ok = QMessageBox::warning(this,
                                  tr("删除当前行！"),
                                  tr("你确定删除当前行吗？"),
                                  QMessageBox::Yes,
                                  QMessageBox::No);
    if (ok == QMessageBox::No) {
        model->revertAll();
    } else {
        model->submitAll();
    }
}

/**
 * @brief 修改车位信息
 */
void carManageWidget::on_btn_commit_clicked()
{
    int curRow = ui->tableView->currentIndex().row(); //获取选中行号
    int id = model->itemData(model->index(curRow, 0))[0].toInt(); //获取选中记录的id
    qDebug() << "id:" << id;
    ParkingInfoWidget *widget = new ParkingInfoWidget();
    widget->setSelectedId(id);
    widget->show();
}
